package uilayer;
import modellayer.*;
import controllayer.*;
import java.util.Scanner;


/**
 * Write a description of class OrdreUI here.
 * 
 * @author (Peter, Dani og Jonas) 
 * @version (a version number or a date)
 */
public class OrdreUI
{
    private OrdreController ordreController;

    public OrdreUI()
    {
        ordreController = ordreController.getInstance();
    }


    public void start()
    {
        ordreMenu();
    }
    
    private void ordreMenu()
    {
        boolean exit = false;
        
        while(exit == false)
        {
            int choice = showMenuText();
            if(choice == 1)
            {
                createOrdre();
            }

            else if(choice == 2)
            {
               displayOrdreDetails();
            }

            else if(choice == 3)
            {
                exit = true;
            }
        }
    }
    
    private void createMenu()
    {
        boolean exit = false;
        while(exit == false)
        {
            int choice = createOrdreText();
            if(choice == 1)
            {
                addVare();
            }

            else if(choice == 2)
            {
                addKunde();
            }

            else if(choice == 3)
            {
                completeOrdre();
                exit = true;
            }

            else if(choice == 4)
            {
                exit = true;
            }
        }
    }
    
    private int showMenuText()
    {
        Scanner input = new Scanner(System.in);
        String menu = "";
        menu += "Hvad vil du gøre?\n\n";
        menu += "1: Opret Salg/ordre\n";
        menu += "2: Find Salg/ordre\n";
        menu += "3: Tilbage\n";
        
        System.out.println(menu);
        
        return input.nextInt();
    }
    
    private int createOrdreText()
    {
        Scanner input = new Scanner(System.in);
        String menu = "";
        menu += "Du arbejder nu med ordrer og salg:\n\n";
        menu += "1: Tilføj varer\n";
        menu += "2: Tilføj en kunde\n";
        menu += "3: Afslut Salg/Ordre\n";
        menu += "4: Afbryd Salg/Ordre\n";
        
        System.out.println(menu);
        
        return input.nextInt();
    }
    
    private void createOrdre()
    {
        boolean succes = false;
        String id = inputID();
        String dato = inputDato();
        int type = inputSalgsType();
        if(type == 1)
        {
            boolean lev = levering();
            succes = ordreController.createOrdre(id, dato, lev);
        }
        else if(type == 2)
        {
            succes = ordreController.createSalg(id, dato);
        }
        
        if(succes == true)
        {
            System.out.println("\nOrdre eller salg er oprettet succesfuldt\n\n");
            createMenu();
        }
        
        else
        {
            System.out.println("\nOrdre eller salg med det ID eksisterer allerede.\n\n");
        }
    }
    
    private void addVare()
    {
        boolean succes;
        String barcode = inputBarcode();
        int antal = inputAntal();
        succes = ordreController.addDelSalg(barcode, antal);
        if(succes == true)
        {
            System.out.println("\nDelsalg tilføjet\n\n");
        }
        else
        {
            System.out.println("\nDer findes ingen varer på den pågældende stregkode\n\n");
        }
    }
    
    private void addKunde()
    {
        boolean succes;
        String phone = inputPhone();
        succes = ordreController.addKunde(phone);
        if(succes == true)
        {
            System.out.println("\nKunde tilføjet\n\n");
        }
        else
        {
            System.out.println("\nDer findes ingen kunder med det pågældende telefonnummer\n\n");
        }
    }
    
    private void paySalg()
    {
        ordreController.setSalgState(true);
    }
    
    private void completeOrdre()
    {
        boolean succes = false;
        Scanner input = new Scanner(System.in);
        String betalingString = "";
        betalingString += "\nTotal: " + ordreController.getTotal() + "dkk";
        betalingString += "\nBetaling?";
        betalingString += "\n1: Betal nu";
        betalingString += "\n2: Betal senere";
        
        System.out.println(betalingString);
        int svar = input.nextInt();
        
        if(svar == 1)
        {
            ordreController.setSalgState(true);
            succes = ordreController.completeSalg();
        }
        
        else if(svar == 2)
        {
            succes = ordreController.completeSalg();ordreController.completeSalg();
        }
        
        if(succes == true)
        {
            System.out.println("Ordre/salg afsluttet");
        }
        
        else
        {
            System.out.println("Ordre/salg er måske ikke afsluttet korrekt");
        }
    }
    
    private void displayOrdreDetails()
    {
        String ordreId = inputID();
        Salg salg = ordreController.findSalg(ordreId);
        if(salg != null)
        {
            int size = salg.getDelSalg().size();
            String ordreInformation = "";
            ordreInformation += "ID: " + salg.getID() + ".\n";
            ordreInformation += "Dato: " + salg.getDato() + ".\n";
        
            for(int i = 0; i < size; i++)
            {
                ordreInformation += "Vare: " + salg.getDelSalg().get(i).getVare().getBeskrivelse();
                ordreInformation += "  Antal: " + salg.getDelSalg().get(i).getAntal() + "\n";
            }
        
            ordreInformation += "Total: " + salg.getTotal() + "dkk";
            if(salg.getState() == true)
            {
                ordreInformation += "\nBetalt";
            }
        
            else if(salg.getState() == false)
            {
                ordreInformation += "\nIkke betalt";
            }
        
            System.out.println(ordreInformation);
        }
        else
        {
            System.out.println("\nDer er intet salg med pågældende ID\n");
        }
    }
    
    private int inputSalgsType()
    {
        Scanner input = new Scanner(System.in);
        String typeString = "";
        typeString += "Ordre eller kassesalg\n\n";
        typeString += "1: Ordre\n\n";
        typeString += "2: Kassesalg\n\n";
        System.out.println(typeString);
        
        return input.nextInt();
    }
    
    private boolean levering()
    {
        Scanner input = new Scanner(System.in);
        String levString = "";
        levString += "Ønskes der levering?\n\n";
        levString += "1: Ja\n\n";
        levString += "2: Nej\n\n";
        System.out.println(levString);
        
        int svar = input.nextInt();
        
        if(svar == 1)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    private String inputID()
    {
        Scanner input = new Scanner(System.in);
        String idString = "";
        idString += "Ordre ID?\n\n";
        
        System.out.println(idString);
        
        return input.nextLine();
    }
    
    private String inputDato()
    {
        Scanner input = new Scanner(System.in);
        String datoString = "";
        datoString += "Dato?\n\n";
        
        System.out.println(datoString);
        
        return input.nextLine();
    }
    
    private String inputBarcode()
    {
        Scanner input = new Scanner(System.in);
        String barcodeString = "";
        barcodeString += "Stregkode på varen?\n\n";
        
        System.out.println(barcodeString);
        
        return input.nextLine();
    }
    
    private int inputAntal()
    {
        Scanner input = new Scanner(System.in);
        String antalString = "";
        antalString += "Antal varer?\n\n";
        
        System.out.println(antalString);
        
        return input.nextInt();
    }
    
    private String inputPerson()
    {
        Scanner input = new Scanner(System.in);
        String personString = "Navn på kunde?\n\n";
        
        System.out.println(personString);
        
        return input.nextLine();
    }
    
    private String inputPhone()
    {
        Scanner input = new Scanner(System.in);
        String phoneString = "";
        phoneString += "Telefonnummer på kunde?\n\n";
        
        System.out.println(phoneString);
        
        return input.nextLine();
    }
}
